1. Field of the Invention
The present invention relates to satellite positioning system (SPS) devices and, more particularly, to a method and apparatus for providing an interface between application software and an SPS sub-system in a location enabled device.
2. Description of the Background Art
Satellite Positioning System (SPS) receivers use measurements from several satellites to compute position. SPS receivers normally determine their position by computing time delays between transmission and reception of signals transmitted from satellites and received by the receiver on or near the surface of the earth. The time delays multiplied by the speed of light provide the distance from the receiver to each of the satellites that are in view of the receiver. Exemplary satellite positioning systems include the Global Positioning System (GPS), the European GALILEO system, and the Russian GLONASS system.
In GPS, each signal available for commercial use utilizes a direct sequence spreading signal defined by a unique pseudo-random noise (PN) code (referred to as the coarse acquisition (C/A) code) having a 1.023 MHz spread rate. Each PN code bi-phase modulates a 1575.42 MHz carrier signal (referred to as the L1 carrier) and uniquely identifies a particular satellite. The PN code sequence length is 1023 chips, corresponding to a one millisecond time period. One cycle of 1023 chips is called a PN frame or epoch.
GPS receivers determine the time delays between transmission and reception of the signals by comparing time shifts between the received PN code signal sequence and internally generated PN signal sequences. These measured time delays are referred to as “sub-millisecond pseudoranges,” since they are known modulo the 1 millisecond PN frame boundaries. If the data bit edges are identified for a particular satellite, then the pseudorange is known modulo the data bit period, for example, 20 ms in the current GPS system. Different satellite navigation systems, and future changes in the GPS system may give different data bit periods. In general, if a pseudorange is known modulo N ms, then we refer to it as a “fractional pseudorange”. By resolving the integer number of milliseconds associated with each delay to each satellite, then one has true, unambiguous, pseudoranges. A set of four pseudoranges together with knowledge of absolute times of transmission of the GPS signals and satellite positions in relation to these absolute times is sufficient to solve for the position of the GPS receiver. The absolute times of transmission (or reception) are needed in order to determine the positions of the GPS satellites at the times of transmission and hence to compute the position of the GPS receiver.
Presently, SPS receivers are being embedded within various types of mobile devices to provide “location-enabled” devices. For example, SPS receivers are being embedded within cellular telephones, personal digital assistants (PDAs), laptop computers, pagers, and the like. In general, the location-enabled device includes a central processing unit (CPU) for controlling the functionality of the device (e.g., wireless communication in a cellular telephone), as well as run various types of application software (e.g., navigation software). Typically, an embedded SPS sub-system (the SPS receiver and its control software) makes use of the CPU in the location enabled device. In particular, the control software for the SPS receiver is executed by the CPU. This saves power and obviates the need for an additional processor device for the SPS sub-system.
Most application software related to SPS location is designed to communicate with an external SPS receiver via an address to a standard hardware communication port. For example, some application software is designed to send and receive data via a universal asynchronous receiver transmitter (UART). The application software may directly interface with the external SPS receiver since the external SPS receiver is typically designed as a stand-alone device. This is not the case, however, if the SPS system is embedded within a location-enabled device, as described above. Notably, an embedded SPS receiver is designed to interface with its control software, which is running on the CPU of the location-enabled device. The application software must interface with the SPS control software. However, the application software is designed to look for the SPS control software at a hardware communication port, and does not expect the SPS control software to be running on the same CPU. Accordingly, there exists a need in the art for a method and apparatus for providing an interface between application software and an SPS sub-system embedded in a location-enabled device.